---
title: 定时触发器
---

## 简介

<Info>
    触发器仅适用于 Workflow 应用。
</Info>

定时触发器能够让 Workflow 在指定的时间自动运行，适用于执行周期性重复任务，如生成每日报告或发送定时通知。

## 添加定时触发器

在 Workflow 画布上，单击右键并选择 **添加节点** > **开始** > **定时触发器**。

<Tip>
    一个 Workflow 可同时拥有多个并行的定时触发器。当并行的分支连续包含相同节点时，可在相同部分之前添加 [变量聚合节点](/zh-hans/guides/workflow/node/variable-aggregator) 以合并分支，而无需在每个分支中分别重复添加相同的节点。
</Tip>

## 配置定时触发器

你可以使用默认的可视化配置或 Cron 表达式来配置 Workflow 的运行计划。

完成配置后，你将看到接下来 5 次的计划运行时间。

<Info>
    定时触发器不产生任何输出变量。但每当其触发 Workflow 时，都会更新系统变量 `sys.timestamp`（每次工作流运行的开始时间）。
</Info>

### 使用可视化配置

适用于简单的时度、日度、周度或月度运行计划。对于周度或月度计划，可同时选择多天。

### 使用 Cron 表达式

适用于更复杂和精确的运行计划，例如在工作日的上午 9 点到下午 5 点之间每 15 分钟运行一次。

<Tip>
    你可以使用 LLM 来生成 Cron 表达式。
</Tip>

#### 标准格式

Cron 表达式是一段可用于定义 Workflow 运行计划的字符串，由五个用空格分隔的字段组成，每个字段代表不同的时间单位。

<Note>
    确保每个字段之间有一个空格。
</Note>

```
* * * * *
| | | | |
| | | | |── 星期几（0-7 或 SUN-SAT, 0 和 7 均表示星期日）
| | | |──── 月份（1-12 或 JAN-DEC）
| | |────── 日（1-31）
| |──────── 小时（0-23）
|────────── 分钟（0-59）
```

<Info>
    当同时为 **日** 和 **星期几** 字段指定值时，触发器将在匹配 *任一* 字段的日期运行。

    例如，`1 2 3 4 4` 会在 4 月 3 日 *以及* 4 月的每个星期四触发 Workflow，而不仅仅是在 4 月 3 号当天刚好是星期四时触发。
</Info>

#### 特殊字符

| <div style={{width: '50px'}}>字符</div> | 描述 | 示例 |
|:-----------|:-------------|:---------|
| `*` | 表示「每个」。 | **小时** 字段中的 `*` 表示「每个小时」。 |
| `,` | 分隔多个值。 | **星期几** 字段中的 `1,3,5` 表示「星期一、星期三和星期五」。 |
| `-` | 定义值的范围。 | **小时** 字段中的 `9-17` 表示「上午 9 点到下午 5 点」。 |
| `/` | 指定步进值。 | **分钟** 字段中的 `*/15` 表示「每 15 分钟」。 |
| `L` | 表示「最后」。 <br /><br />在 **日** 字段中，表示「月的最后一天」。<br /><br />在 **星期几** 字段中：<ul><li>单独使用时，表示「周的最后一天」。</li><li>与数字组合使用时，表示「月的最后一个指定的星期几」。</li></ul>| **日** 字段中的 `L` 表示「1 月 31 日、4 月 30 日，或非闰年的 2 月 28 日」。<br /><br />**星期几** 字段中的 `L` 表示「星期日」。<br /><br />**星期几** 字段中的 `5L` 表示「月的最后一个星期五」。 |
| `?` | 表示「任意」或「无特定值」。<br /><br />如果你为 **星期几** 字段指定了值，可以用 `?` 来忽略 **日** 字段，反之亦然。<br /><br />非必需，因为 `*` 也可实现相同效果。 | 若要在每个星期一运行，将 **日** 字段设为 `?` 会比设为 `*` 更精确。|

#### 预定义表达式

- `@yearly`：每年一次，在 1 月 1 日的凌晨 12 点运行。
- `@monthly`：每月一次，在每月第一天的凌晨 12 点运行。
- `@weekly`：每周一次，在星期日的凌晨 12 点运行。
- `@daily`：每天一次，在凌晨 12 点运行。
- `@hourly`：在每小时开始时运行。

#### 示例

| 运行时间 | Cron 表达式 |
|:----------|:-----------------|
| 工作日上午 9 点 | `0 9 * * MON-FRI` or `0 9 * * 1-5` |
| 每周三下午 2:30 | `30 14 * * WED` |
| 每周日凌晨 12 点 | `0 0 * * 0` |
| 每周二每 2 小时一次 | `0 */2 * * 2` |
| 每月第一天凌晨 12 点 | `0 0 1 * *` |
| 1 月 1 日和 6 月 1 日的中午 12 点 | `0 12 1 JAN,JUN *` |
| 每月最后一天下午 5 点 | `0 17 L * *` |
| 每月最后一个星期五晚上 10 点 | `0 22 * * 5L` |


## 测试定时触发器

- **运行此步骤**：定时触发器会忽略已配置的计划，立即运行。

- **测试运行**：定时触发器会等待其下一个计划运行时间。

{/*
Contributing Section
DO NOT edit this section!
It will be automatically generated by the script.
*/}

---

[编辑此页面](https://github.com/langgenius/dify-docs/edit/main/zh-hans/guides/workflow/node/schedule-trigger.mdx) | [提交问题](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)

